package cn.edu.dz.bank1;

public class Bank {

    //属性：账户余额100元
    private int account=100;

    private Object lock=new Object();

    public synchronized  void ask(){
        //咨询方法
        System.out.println(Thread.currentThread().getName()+"向大堂经理咨询业务");
   try {
       Thread.sleep(2000);
       System.out.println(Thread.currentThread().getName()+"咨询结束");
   }catch (InterruptedException e){
       e.printStackTrace();
   }
    }

    //方法：取钱
    public synchronized int  getMoney(int order){
        //
        System.out.println(Thread.currentThread().getName()+"正在取款。。。。。。。。。。。");
        synchronized (lock){
            //当账户余额大于所需要取款的金额
            if(account>=order){
                //正常取款
                System.out.println("系统正在处理。。。。。。");
                //Math方法，产生随机数
                long m=(long)(Math.random()*2000+600);
                try {
                    //线程休眠，模拟取款等待时间
//                Thread.sleep(m);
                    Thread.sleep(200);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                //当前账户余额为账户金额-取款金额
                account-=order;
                //输出提示语句
                System.out.println("尊敬的"+Thread.currentThread().getName()+"用户，您本次的取款金额是："+order+"元，" +
                        "当前账户余额为"+account+"元");
                return order;
            }else {
                //当账户余额小于所需取款的金额，提示，操作失败
                System.out.println("对不起，操作失败，余额不足。。。。。");
                return 0;
            }

        }


    }

}
